10 PRINT "What is your name?" 20 k$ = INKEY$ 30 PRINT k$ 40 LET total = 0 50 FOR counter = 0 TO 99 60 total = total + counter 70 NEXT counter 80 PRINT total
25 PRINT "Hello"
alert("Hello" + prompt("What is your name?"));
alert(
  Array
    .from(Array(100).keys())
    .reduce(
      (total, value, i) => (total + i),
      0
    )
);
[1,2,3,4].filter( val => (val > 2) ) [1,2,3,4].map( val => (val + val) ) [1,2,3,4].reduce( (accumulator, val) => (accumulator + val), 0, )
const obj = { a:1, b:2 };
const keys = Object.keys(obj);
const filteredKeys = keys.filter(
  key => ( obj[key] > 1 )
);
const filteredObj = filteredKeys.reduce(
  (accumulator, key) => {
    accumulator[key] = obj[key];
    return accumulator;
  },
  {},
);
const obj = { a:1, b:2 };
const filteredObj = Object
  .keys(obj)
  .filter( key => ( obj[key] > 1 ) )
  .reduce(
    (accumulator, key) => {
      accumulator[key] = obj[key];
      return accumulator;
    },
    {},
  );
"Pure Functions"
"No Side Effects"
Immutable and Stateless.
"Currying"
R.add() and R.ap() examples
Speed
Functions are easier to test, to mock
They will be fast soon
// @flow
const getUsers = (users: any, index: number) => {
  return users[id];
};
const users = [{name: 'Matthew'}];
// args wrong!
getUsers(0, users);
					
type User = { name: string }
type Users = Array<User>
const renderUsers = (users: Users, index: number) => {
  return users[index];
};
renderUsers( {name: 'Matt', other: false }, 0);
					
function bigNumbersRcool(num: number) {
  if (num > 10) {
    return 'cool';
  }
}
const result: string = bigNumbersRcool(100);
console.log(result.toString());
console.log(bigNumbersRcool(1).toString());
// TypeScript:
// error at runtime
// "Cannot read property 'toString' of undefined"
// Flow:
// error: call of method `toString`.
// Method cannot be called on possibly null value
(credit)
Use typing on long term or big projects